package com.jt.provider.service;


import com.alibaba.csp.sentinel.slots.block.BlockException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

/**
 * 通过此类处理由@SentinelResource 注解描述的方法出现的限流异常
 */

@Slf4j
@Component
public class ResourceBlockHandler {

    /**
     * 这里的异常处理方法有要求:
     * 1.修饰符:public static
     * 2.返回值类型  要与@sentinelResource 注解描述方法返回值类型相同
     * 3.参数列表要与@SentinelResource 注解描述方法参数列表相同
     * 可以再最后添加一个BlockException参数
     * @return
     */

    //blockHandler="doHandler" 与 ResourceBlockHandler类中的doHandler方法绑定,doHandler方法必须包含doGetResource方法
    //的参数,还有一个异常处理参数,如:
    //doHandler(BlockException ex)与doGetResource()方法绑定
    public static String doHandler(BlockException ex){
        log.error("被限流了");
        return "访问太频繁了";

    }


    //blockHandler="doHandler" 与 ResourceBlockHandler类中的doHandler方法绑定,doHandler方法必须包含doGetResource方法
    //的参数,还有一个异常处理参数,如:
    //doHandler(BlockException ex)与doGetResource(Integer id)方法绑定
    public static String doHandler(Integer id,BlockException ex){
        log.error("被限流了");
        return "你太快了~~~";
    }



}
